<?php
/**
 * @package		orcamento	
 * @desc		Componente voltado to listar produtor e entreoutros
 * @author	    Lucas Emmanoel Araujo Machado (lucasemmanoel@gmail.com).
 * @since		2011-04-10	
 * @abstract	Controlador do Componente
 */

// Não permite o acesso direto ao arquivo.
defined( '_JEXEC' ) or die( 'Restricted access' );

class OrcamentosControllerOrcamento extends OrcamentosController
{
	var $id_user = null;
	var $link = 'index.php?option=com_orcamento';
	/*
	 * Constructor (registra tarefas adicionais ao método)
	 */
	function __construct( )
	{
		parent::__construct( );
		// Registra task add como edit
		$this->registerTask( 'add'  , 	'edit' );
	}

	/**
	 * Exibe o formulário para adição/edição de dados.
	 */
	function edit( )
	{
		JRequest::setVar( 'view', 'orcamento' );
		JRequest::setVar( 'layout', 'default'  );
		JRequest::setVar('hidemainmenu', 1);
		parent::display( );
	}

	function carrinho_cotacao(){
		JRequest::checkToken() or jexit( 'Invalid Token' );

		$dados = JRequest::get();

		$model = $this->getModel( 'orcamento' );
		if($model->addItem($dados)){
			$msg = JText::_( 'Informações registradas' );
		}
		else{
			$msg = JText::_( 'Informações não registradas' );
		}
		$link = $this->link."&view=orcamento&layout=carrinho";

		$this->setRedirect( $link, $msg );
	}

	function remove_item(){
		$dados = JRequest::get();
		$model = $this->getModel( 'orcamento' );
		$model->removeItem($dados);
		$link = $this->link."&view=orcamento&layout=carrinho";
		$this->setRedirect( $link, $msg );
	}

	/**
	 * Salva um registro (e direciona para a página principal).
	 */
	function Cadastrar( )
	{
		// Check for request forgeries
		JRequest::checkToken() or jexit( 'Invalid Token' );

		// Recupera o model
		$model = $this->getModel( 'orcamento' );
		
		$data = JRequest::get( 'post' );
		
		$data['dataInscricao'] = date('Y-m-d');
		$data['name']		= $data['nome'];
		$data['username']	= JRequest::getVar('username', '', 'post', 'username');
		$data['password']	= JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
		$data['password2']	= JRequest::getVar('password2', '', 'post', 'string', JREQUEST_ALLOWRAW);

		$idUser = $this->registrarUsuario($data);
		if( !$idUser ){
			JError::raiseWarning(100, 'Erro ao Salvar usuário.' );
			$link = 'index.php?option=com_orcamento&view=cliente';
			$this->setRedirect($link, $msg);
			return false;
		}
		$data['idUser'] = $idUser;

		// Verifica se o model esta armazenando os dados
		if ( $model->store( $data ) )
		{
			$msg = JText::_( 'Informações registradas' );
		}
		else
		{
			// Retorna o erro gerado no model
			JError::raiseWarning( 100, 'Erro ao salvar as informações. ' . $model->getError( ) );
		}
		$link = $this->link."&view=cliente";
		$this->setRedirect( $link, $msg );
	}

	/**
	 * Remove registro(s).
	 */
	function remove( )
	{
		// Recupera o model
		$model = $this->getModel( 'orcamento' );

		// Verifica se o model esta removendo os dados
		if( $model->delete( ) )
		{
			$msg = JText::_( 'Registro(s) removido(s) com sucesso!' );
		}
		else
		{
			// Retorna o erro gerado no model
			JError::raiseWarning( 100, 'Erro ao deletar as informações. ' . $model->getError( ) );
		}
		$link = $this->link;
		$this->setRedirect( $link , $msg );
	}

	/**
	 * Cancela a edição de um registro.
	 */
	function cancel( )
	{
		JError::raiseNotice( 100, JText::_( 'Operação cancelada' ) );
		$link = $this->link;
		$this->setRedirect( $link );
	}

	public function registrarUsuario( $dados )
	{
		global $mainframe;

		// Initialize some variables
		$acl		=& JFactory::getACL();

		// Create a new JUser object
		$user = new JUser();

		// Bind the post array to the user object
		if (!$user->bind( JRequest::get('post'), 'usertype' )) {
			JError::raiseError( 500, $user->getError());
		}
		// Set some initial user values
		
		
		$user->set( 'name' , $dados['nome'] );
		$user->set('usertype', 'Registered');
		$user->set('gid',18);
		$user->set('sendEmail', 0);
		jimport('joomla.user.helper');
		$user->set('activation', JUtility::getHash( JUserHelper::genRandomPassword()) );
		$user->set('block', '0');
		/*
	 	 * Lets save the JUser object
	 	 */
		if( $dados['idUser'] != 0 ){ 
			$user->set('id', $dados['idUser']);
			if (!$user->save(true))
			{
				JError::raiseWarning( '' , JText::_('Informação não salva.') );
				return false;
			}
		}else{
			$user->set('id', 0);
			if (!$user->save())
			{
				JError::raiseWarning( '' , JText::_('Informação não salva.:'.$user->getError() ) );
				return false;
			}
		}
		return $user->id;
	}

}
